perm filename C[1,BGB]2 blob sn#013957 filedate 1972-12-06 generic text, type T, neo UTF8
00100	; ALTERNATE PDP-10 MNEMONICS.
00200		OPDEF LIP[HLR]↔OPDEF LAP[HRR]↔OPDEF DIP[HRLM]
00300		OPDEF DAP[HRRM]↔OPDEF CAR[HLRZ]↔OPDEF CDR[HRRZ]
00400		OPDEF DIPZ[HRLZM]↔OPDEF DAPZ[HRRZM]↔OPDEF ZIP[HRRZS]
00500		OPDEF ZAP[HLLZS]↔OPDEF WIP[HRROS]↔OPDEF WAP[HRRZS]
00600		OPDEF NIP[HLRE]↔OPDEF NAP[HRRE]↔OPDEF NIM[HRREI]
00700		OPDEF LAC[MOVE]↔OPDEF DAC[MOVEM]↔OPDEF SLAC[MOVS]
00800		OPDEF GO[JRST]↔OPDEF LACI[MOVEI]↔OPDEF SLACI[MOVSI]
00900		OPDEF LAPI[HRRI]↔OPDEF LIPI[HRLI]↔OPDEF LACN[MOVN]
01000		OPDEF DACN[MOVNM]↔OPDEF LACM[MOVM]↔OPDEF DACM[MOVMM]
01100		OPDEF FIXX[FIX 233000]↔OPDEF FLOAT[FSC 233]
01200	
01300	; SAIL LIKE SUBROUTINE LINKAGE.
01400		↓P ←← 17
01500		DEFINE SUBR(NAME){INTERN NAME↔↓NAME: ;}
01600		DEFINE CALL(NAME,X1,X2,X3,X4){
01700		IFDIF <> <X1> {PUSH P,X1↔IFDIF <> <X2> {PUSH P,X2
01800		IFDIF <> <X3> {PUSH P,X3↔IFDIF <> <X4> {PUSH P,X4}}}}
01900		PUSHJ P,NAME}
02000	
02100	;ARGUMENT FETCH.
02200		DEFINE ARG1<-1(17)>↔	DEFINE ARG2<-2(17)>
02300		DEFINE ARG3<-3(17)>↔	DEFINE ARG4<-4(17)>
02400	
02500	;CALL AND RETURN VALUE.
02600		DEFINE SETQ (VAR,LIST){
02700		CALL(LIST)
02800		DAC 1,VAR}
02900	
03000	;RETURN FROM AN N-ARGUMENT SUBROUTINE CALL.
03100		DEFINE POP0J <POPJ 17,>
03200		↓POP1J.:SUB P,[XWD 2,2]↔GO@2(17)↔DEFINE POP1J<GO POP1J.>
03300		↓POP2J.:SUB P,[XWD 3,3]↔GO@3(17)↔DEFINE POP2J<GO POP2J.>
03400		↓POP3J.:SUB P,[XWD 4,4]↔GO@4(17)↔DEFINE POP3J<GO POP3J.>
03500		↓POP4J.:SUB P,[XWD 5,5]↔GO@5(17)↔DEFINE POP4J<GO POP4J.>
03600	
03700	;ACCUMULATOR TRANSPARENCY.
03800		FOR @$ I←0,17{↓AC$I: 0↔}
03900		DEFINE SAVAC $(N){LAC[XWD 2,AC2]↔BLT AC$N}
04000		DEFINE GETAC (N){LAC[XWD AC2,2]↔BLT N}
04100	
04200	;MACROS FOR ALLOCATING AND NAMING WORKING SPACE.
04300		DEFINE ACCUMULATORS(LIST){ACPTR←←2
04400		FOR AC⊂(LIST)<AC←ACPTR↔ACPTR←←ACPTR+1↔>}
04500		DEFINE DECLARE (LIST){
04600		FOR VARNAM⊂(LIST)<VARNAM: 0↔>}
04700	
04800	;FATAL ERROR MESSAGE.
04900		DEFINE FATAL(STR){PUSHJ P,FATAL.↔ASCIZ/STR/}
05000		FATAL.:OUTSTR[BYTE(7)15,12,106,101,124↔"AL - "⊗1↔0]
05100		OUTSTR @(17)↔INCHRW↔GO .-1↔LIT